Implement BayesFilter base class and refactor localization filters (#1277)#1307
Open
ProblemShooter wants to merge 3 commits intoAtsushiSakai:masterfrom
Open
Implement BayesFilter base class and refactor localization filters (#1277)#1307ProblemShooter wants to merge 3 commits intoAtsushiSakai:masterfrom
ProblemShooter wants to merge 3 commits intoAtsushiSakai:masterfrom
Conversation
This commit implements a base BayesFilter abstract class to standardize the interface across all Bayesian filtering algorithms in the Localization directory. Key changes: - Created bayes_filter.py with abstract BayesFilter base class - Defines common interface methods: predict(), update(), get_state(), get_covariance() - All filter implementations (EKF, UKF, PF, etc.) will inherit from this base class - Provides consistent API for all localization filters - Includes comprehensive docstrings This addresses issue AtsushiSakai#1277 by creating a unified structure for filter implementations, making the code more maintainable and consistent across different filter types. Reference: AtsushiSakai#1277
…kai#1277) This commit implements an Extended Kalman Filter class that inherits from the BayesFilter base class, demonstrating the unified interface pattern. Key features: - ExtendedKalmanFilter extends BayesFilter - Implements all required abstract methods: predict(), update(), get_state(), get_covariance() - Maintains Gaussian belief with state (mean) and covariance - Includes motion and observation model methods with Jacobians - Provides configurable noise covariances (Q and R) - Comprehensive documentation and docstrings This demonstrates the consistent API for EKF localization, making it easier to swap between different filter implementations. Addresses issue AtsushiSakai#1277 - Code improvement in Localization directory.
This commit implements a Particle Filter class that inherits from the BayesFilter base class, demonstrating the unified interface pattern for non-Gaussian localization. Key features: - ParticleFilter extends BayesFilter - Implements all required abstract methods: predict(), update(), get_state(), get_covariance() - Represents belief as weighted particles for non-Gaussian distributions - Includes low-variance resampling algorithm - Provides effective particle count calculation - Motion and observation models with configurable noise - Comprehensive documentation and docstrings This demonstrates the consistent API for Particle Filter localization, allowing easy integration with other filter types. Addresses issue AtsushiSakai#1277 - Code improvement in Localization directory.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reference issue
Fixes #1277
What does this implement/fix?
This PR implements a base BayesFilter class and refactors the Localization directory structure to create a unified, consistent API across all Bayesian filtering algorithms.
Key Changes:
Base BayesFilter Class (
bayes_filter.py)predict(),update(),get_state(),get_covariance()reset()method that can be overriddenExtended Kalman Filter Implementation (
ekf_localization.py)Particle Filter Implementation (
pf_localization.py)Benefits:
Additional information
This implementation demonstrates the design pattern requested in issue #1277. The existing filter implementations in subdirectories remain unchanged for backward compatibility. The new class-based implementations can coexist with the existing script-style implementations.
Future work could involve:
CheckList